package com.hope.hotel.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hope.hotel.entity.po.Booking;
import com.hope.hotel.entity.vo.BookingDetailVO;
import com.hope.hotel.entity.vo.BookingListVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 预订VO查询Mapper
 */
@Mapper
public interface BookingVOMapper extends BaseMapper<Booking> {
    
    /**
     * 获取用户的预订列表
     * @param userId 用户ID
     * @return 预订列表
     */
    List<BookingListVO> getUserBookings(@Param("userId") Long userId);
    
    /**
     * 获取预订详情
     * @param bookingId 预订ID
     * @return 预订详情
     */
    BookingDetailVO getBookingDetail(@Param("bookingId") Integer bookingId);
    
    /**
     * 检查预订是否属于用户
     * @param bookingId 预订ID
     * @param userId 用户ID
     * @return 数量
     */
    Integer checkBookingBelongsToUser(@Param("bookingId") Integer bookingId, @Param("userId") Long userId);
    
    /**
     * 获取预订的入住人信息
     * @param bookingId 预订ID
     * @return 入住人列表
     */
    List<BookingDetailVO.TravelerVO> getBookingTravelers(@Param("bookingId") Integer bookingId);
    
    /**
     * 获取预订的评价信息
     * @param bookingId 预订ID
     * @return 评价信息
     */
    BookingDetailVO.ReviewVO getBookingReview(@Param("bookingId") String bookingId);
    
    /**
     * 检查预订是否有评价
     * @param bookingId 预订ID
     * @return 评价数量
     */
    Integer countBookingReviews(@Param("bookingId") Integer bookingId);
} 